package command;

import javax.swing.JOptionPane;

import org.uc3m.ed.tad.lista.ListaOrdenada;
import org.uc3m.es.Factory.panel.FactoriaPanel;
import org.uc3m.es.implementacion.Command;
import org.uc3m.es.interfaz_grafica.ventana.PanelDibujo;
import org.uc3m.es.interfaz_grafica.ventana.VentanaPrincipal;

public class CommandRecuperar implements Command {

	private PanelDibujo _panel; 
	private ListaOrdenada<Integer> _lista;
	
	public void execute() {
		String valor;
		_panel= FactoriaPanel.metodoFactoria();
		_lista=(ListaOrdenada<Integer>) _panel.getEstructura();
		if (_lista!=null)
		{	
			valor=JOptionPane.showInputDialog("Introduce la posicion del elemento a recuperar","Posicion");
			try{
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(),_lista.recuperar(Integer.parseInt(valor)),"Posicion del Elemento "+valor ,JOptionPane.INFORMATION_MESSAGE);
				_panel.setEstructura(_lista);
				_panel.repaint();
			}catch(NumberFormatException e){
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "No has introducido un valor numerico","ERROR::311" ,JOptionPane.ERROR_MESSAGE );
			}catch(IndexOutOfBoundsException e){
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "No hay ningun elemento en esa posicion","ERROR::315" ,JOptionPane.ERROR_MESSAGE );
			}catch(Exception e){
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "Se ha produciodo una excepcion\nMirar la consola","CLASS::LO::CommandRecuperar ERROR::303" ,JOptionPane.ERROR_MESSAGE );
				e.printStackTrace();
			}
		}
		else
			JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "Debes Crear una Lista Ordenada antes de Recuperar un nodo","ERROR::312" ,JOptionPane.ERROR_MESSAGE );

	}

}
